package com.macro.mall.tiny.modules.ums.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.macro.mall.tiny.common.api.CommonResult;
import com.macro.mall.tiny.modules.ums.model.Course;
import com.macro.mall.tiny.modules.ums.model.bo.CourseBO;
import com.macro.mall.tiny.modules.ums.model.bo.CourseSelectBO;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

public interface CourseService extends IService<Course> {

    /**
     * 分页查询
     * @param courseSelectBO 分页查询
     * @return
     */
    Page listPage(CourseSelectBO courseSelectBO);

    /**
     * 更改课信息
     * @param courseBO
     */
    void inst(CourseBO courseBO);

    /**
     * 新增课程根据redis 来判断是否成名称重复
     * @param courseBO
     */
    CommonResult instRedis(CourseBO courseBO);


    CommonResult delRedisKey();

    /**
     * 新增课程根据redis 来判断是否成名称重复
     * @param courseBO
     */
    CommonResult instRedisCourse(CourseBO courseBO);

    /**
     * 导出课程
     * @param courseBO
     */
    void export(HttpServletResponse response , CourseBO courseBO);

    /**
     * 导入课程
     * @param file
     */
    void imports(MultipartFile file);

    /**
     * 导出课程demo
     * @param response
     * @param courseBO
     */
    void exportDemo(HttpServletResponse response, CourseBO courseBO) throws IOException;

    /**
     * 导入文件
     * @param file
     */
    void importsDemo(MultipartFile file) throws Exception;

    /**
     * 定时去更新redis中得课程信息
     */
    void listJob();

    /**
     * 测试
     * @param courseSelectBO
     * @return
     */
    List<Course> listDemo(CourseSelectBO courseSelectBO);

    /**
     * 测试
     */
    void demo2();

}
